Interconnection fabric enumeration

ABSTRACT

The present invention relates generally to a generic fabric interconnect system and method for providing a data path between and among nodes and processing elements within an interconnection fabric. More specifically, there is provided a device accessible by a host processor for expanding access over a first bus to a second bus, the first bus and the second bus each being adapted to separately connect to respective ones of a plurality of bus-compatible devices, each device which comprise a link, a first circuit adapted to couple between the first bus and the link, and a second circuit adapted to couple between the link and the second bus, the first circuit and the second circuit each being operated as a bridge and being operable to (a) send outgoing information serially through said link in a form different from that of the first bus and the second bus (b) approve an initial exchange between the first bus and the second bus in response to pending bus transactions having a characteristic signifying a destination across a device, and (c) allow the host processor, communicating through the first bus, to individually address different selectable ones of the bus-compatible devices on the second bus: (i) using on the first bus substantially the same type of addressing as is used to access devices on the first bus, and (ii) without first employing a second, intervening one of the bus-compatible devices on the second bus.

This application is a divisional of U.S. Ser. No. 10/152,656 filed May21, 2002, now U.S. Pat. No. 6,996,658 which claims priority ofprovisional patent application Ser. No. 60/330,215 filed on Oct. 17,2001, the disclosures of which are hereby incorporated by reference.

BACKGROUND OF THE INVENTION

1. Field of Invention

The present invention relates generally to a fabric interconnect systemand method for providing a data path between and among nodes andprocessing elements within an interconnection fabric.

2. Brief Description of the Prior Art

The components inside a computer communicate with each other in variousways. In general, most of the internal system components, including theprocessor, cache, memory, expansion cards and storage devices, exchangeinformation over one or more “buses”.

A bus refers to the physical medium, usually, a wire or a plurality ofwires through which data is transmitted from one part of a computer toanother. When used in reference to personal computers, the term bususually refers to internal bus, which connects all the internal computercomponents to the CPU and main memory.

A computer generally has more than one type of bus. Each bus connectsdifferent devices together in order to completely integrate the variousparts of the computer. The communication on a bus can be controlled andregulated by a system chipset, which insures that every device in thesystem is talking properly to every other one by imposing rules thatstrictly manage the movement of data along the bus. Devices must adhereto a common protocol that specifies the rules for communication betweendevices. Each device that interfaces to the bus implements a common setof functions. In addition, the system chipset provides functions thatare needed for the bus to operate (such as clocks and interruptcontrollers). Other devices use, but do not provide, these functions.

A bus is composed of three distinct parts: the data bus the address bus,and the control bus. In some cases the data and address bus can bemultiplexed onto the same physical wire. The data bus carries the databeing transferred. The address bus carries information about where inmemory the data is to be transferred. In the case where one physicalwire is used for the data and address bus, a signal pin is used toindicate if data or address information is currently on the bus. Thecontrol bus carries meta-data relating to the state of the bus andside-band signals that allow for the orderly management of the system.

In addition, there are a number of devices that control the flow ofinformation on a bus. These devices include switches and bridges. Aswitch or a bridge is a device that implements rules, known as protocolsto regulate the transfer of information across a bus. A protocol is anagreed-upon format for transmitting data between two devices. Theprotocol can set forth rules for various elements of the informationtransfer, such as, the type of error checking to be used, the datacompression method, if any, how the sending device will indicate that ithas finished sending a message, how the receiving device will indicatethat it has received a message. A protocol can be implemented either insoftware or in hardware, such as in a switch or bridge.

Current industry standard communication interconnects (bus standards)are generally of two types: proprietary and generic. Propriety systemsare expensive, incompatible with other technology, and tend to populatethe high end of the marketplace. Generic systems, based upon industrystandards, such as PCI, CompactPCI and H.100/H.110 are constrained inscale and bandwidth, and are usually tuned for one class of traffic.Electrical signaling characteristics, mechanical connections, andspatial locality are additional constraints, as are latency andreliability. The advantage of generic systems is their ability toprovide acceptable performance in medium and low-end systems at a verylow cost.

Compatibility between devices in generic systems having differentprotocols can be achieved using devices such as application specificintegrated circuits (ASICs), which can incorporate their dedicated datatransmission protocols for linking communications between two differentindustry standard systems. Two types of ASIC devices that are used toachieve compatibility are edge nodes, sometimes referred to as bridgesand multi-port switches, sometimes referred to as just switches.

A data bus that connects a plurality of devices is sometimes referred toas an interconnect. An interconnect where devices are connected withmany redundant connections or paths between network nodes to make up thecommunications system within a computer can be generally referred to asa fabric. The geometric arrangement of an interconnect is known as itstopology. A protocol will define the set of rules and signals thatregulate the flow of data within a fabric in accordance with itstopology.

One particular type of protocol that controls data routing across a busis known as PCI. PCI routing is based on the notions of initiators andtargets. The initiator or origin of a transaction is the edge node thatgenerates the initial bus transaction, the terminus of a transaction isthe edge node that ultimately receives the transaction. Outside thecontext of a PCI bus, one way to move data through a network or fabricis known as routing and is the principle function of the devices andprotocols that make up a fabric. The routing of data generally takesplace by first assembling the data to be transmitted into groups of datacorresponding to a particular set of rules. These groups are referred toas packets or frames. The packets or frames are then transmitted fromthe origin to the terminus using one of the various routing methods.Those methods include, Address Routed Frames or Path Routed Frames.Address routing is, just as its name implies the method of sending datato a particular node, located at a discrete address. Path Routed Framesmove across the fabric from the origin to the terminus by “knowing” therelative location of the terminus within the fabric. Paths are strictlyrelative, comprising something similar to a multi-street intersectionfor which routing direction may be of the form “skip over three streetsin the clockwise direction”, which gives rise to a valuable property ofPath Routing, that being that it is bi-directional.

However, the routing devices and protocols that exist do not provide theadvantages of spoof-proof bi-directionality. Routing is spoof-proof ifdata arriving at a fabric location can only have come from the locationindicated by the data. Routing is bi-directional if the path indicatedby arriving data can be transformed into the return path of the sourceof the data. In addition, there exists a need for a system and method ofdata transmission in a computer that can provide a high degree ofreliability through the use of redundant interconnects, easy deviceinsertion and removal, provide the capability for longer distancesbetween point connections while keeping latency bounded.

Therefore it is an object of the present invention to provide a systemand method whereby data packets can be routed over an interconnectfabric using generic protocol and devices, adaptable to transportgeneric frame data as well as high-level protocols such as IP, ATM andEthernet.

SUMMARY OF THE INVENTION

In accordance with one aspect of the present invention, there isprovided a device accessible by a host processor for expanding accessover a first bus to a second bus, the first bus and the second bus eachbeing adapted to separately connect to respective ones of a plurality ofbus-compatible devices, each device of which comprises a link, a firstcircuit adapted to couple between the first bus and the link, and asecond circuit adapted to couple between the link and the second bus,the first circuit and the second circuit each being operated as a bridgeand being operable to (a) send outgoing information serially throughsaid link in a form different from that of the first bus and the secondbus (b) approve an initial exchange between the first bus and the secondbus in response to pending bus transactions having a characteristicsignifying a destination across a device, and (c) allow the hostprocessor, communicating through the first bus, to individually addressdifferent selectable ones of the bus-compatible devices on the secondbus: (i) using on the first bus substantially the same type ofaddressing as is used to access devices on the first bus, and (ii)without first employing a second, intervening one of the bus-compatibledevices on the second bus.

The features, aspects, and advantages of the present invention willbecome better understood with regard to the following description,appended claims, and accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWING(S)

Turning to the drawings:

FIG. 1 is a block diagram depicting an exemplary fabric topology of acommunication system interconnect embodying a typical application of thepresent invention.

FIG. 2 is a block diagram representing one embodiment of a bridgeapparatus constructed in accordance with the present invention.

FIG. 3A is a diagram representing one embodiment of a switch apparatusconstructed in accordance with the present invention.

FIGS. 3B and 3C are diagrams that show the relationship between links,ports, and turns in a switch constructed in accordance with the presentinvention.

FIG. 3D is a table that lists the valid and invalid turns for each portin FIG. 2B when it is an input port.

FIG. 4A is a block diagram representing one embodiment of the bridgeapparatus of the present invention wherein the Edge Node (Bridge) isfunctioning as a Root Bridge.

FIG. 4B is a block diagram representing one embodiment of the bridgeapparatus of the present invention wherein the Edge Node (Bridge) isfunctioning as a Leaf Bridge.

FIG. 4C is a block diagram representing one embodiment of the bridgeapparatus of the present invention wherein the Edge Node (Bridge) isfunctioning as a gateway only device.

FIG. 5A is a block diagram representing the structure of a generic dataframe for data transmission and control in accordance with the presentinvention.

FIG. 5B is a diagram representing the structure of the header of ageneric path routed frame in accordance with the present invention.

FIG. 5C is a diagram representing the structure of the header of ageneric address routed frame in accordance with the present invention.Address

FIG. 6A shows a block diagram of an interconnect configuration inaccordance with the present invention having five bridges (one root nodeand four leaf nodes) and one switch.

FIG. 6B shows a block diagram of an interconnect configuration inaccordance with the present invention.

FIG. 6C is a diagram depicting the relationship between configurationregisters in accordance with the present invention.

FIG. 6D is a diagram depicting a simple parallel fabric configuration inaccordance with the present invention.

DETAILED DESCRIPTION OF THE INVENTION

In the following detailed description of the embodiments, reference ismade to the accompanying drawings that form a part hereof, and in whichis shown by way of illustration specific embodiments in which theinvention may be practiced. These embodiments are described insufficient detail to enable those skilled in the art to practice theinvention, and it is to be understood that other embodiments may beutilized and that structural, logical and electrical changes may be madewithout departing from the spirit and scope of the present inventions.The following detailed description is, therefore, not to be taken in alimiting sense. The leading digit(s) of the reference numbers in theFigures usually correspond to the figure number, with the exception thatidentical components which appear in multiple figures are identified bythe same reference numbers.

Overview

FIG. 1 is a block diagram depicting an exemplary fabric topology of acommunication system interconnect for a typical application of thepresent invention. The system of the present invention has two differentcomponent devices; switches 101, sometimes referred to as stars, andbridges 102, sometimes referred to as edge nodes. Both of these devicesare connected by links 103. [bridges and switch in diagram are notlabeled] Switches are multi-link and multi-port devices that routetraffic from input ports to output ports. Bridges are devices totranslate from one protocol into a second protocol. A link is a physicaldirect point-to point connection between two components. The datatransmission protocol of the present invention is a hybridserial-parallel transmission model in which bytes are transmittedserially across 4 parallel wire-pairs. These 4 independently transmittedbytes are then interleaved to create a single 4-byte wide data word.

The present invention will now be described in detail with reference tothe accompanying drawings. While the present invention is described inthe context of a network topology and interface utilizing a particularcommunications protocol, for example, the network is described asutilizing a PCI interface, this is only one example of a communicationsprotocol that can be used. The drawings and description are intended toprovide one example of a network configuration in which a system of thepresent invention may be implemented and are not intended to limit theapplicability of the present invention to other network configurations.

Bridge

Referring to FIG. 2, a diagram representing a multi function bridgeapparatus 200 constructed in accordance with the present invention isshown. Bridge apparatus 200 translates parallel bus traffic into serialbus traffic.

Bridge apparatus 200 comprises an interface; registers; a transmitterunit or means having a CRC generator, an encoder and a serial converter;a receiver unit or mean having a parallel converter associated with aclock recovery mechanism or means, a decoder, and a CRC-16 checker; andserial links.

The interface can be a 66 MHZ, 64-bit PCI interface. Transmitter unitreceives data (formatted frames) to be transmitted in parallel form. Asthe stream of data moves through the transmitter it attaches a 16-bitcyclic redundancy check (CRC-16) value to the end of each transmittedframe, creating an extended frame. Each byte of the extended frame thenpasses through an 8B/10B encoder for conversion into 10-bit characters.These 10 bit characters are then converted into a serial stream andtransmitted via the link. This stream is DC balanced as a result of the8B/10B encoding.

In one embodiment, the transmitter is compatible with the TIA/EIA-644and IEEE 1596.3 LVDS specifications. It delivers data at a 622.08 Mbpsrate with a loop current ranging from 2.5 mA to 4.5 mA. The resultingdifferential voltage produced at the receiver is at least 250 mV andless than 450 mV. On-chip source termination minimizes reflections andthis improves signal integrity across backplanes and connectors.

Receiver recovers the clock embedded in the serial data stream and usesit to convert the serial stream into a 10-bit parallel equivalent. Thedata then passes through an 8B/10B decoder or conversion into eight-bitdata bytes. The decoded data stream is then passed through a 16-bitcyclic redundancy check (CRC-16) block. The block compares the CRC-16value from the transmitter to the CRC-16 value from the receiver. Theblock then removes CRC-16 data from the data stream.

In one embodiment, the receiver is compatible with the TIA/EIA-644 andIEEE 1596.3 LVDS specifications. An internal 100 Ω (nominal) resistorprovides the required differential impedance to produce a differentialvoltage across the receiver. The nominal voltage is ˜400 mV with atypical center point at ±1.2V. The receiver provides ±100 mV sensitivityover a common-mode range of 0V to 2.4V. The receiver compensates forskew between differential pairs for proper detection. It will notoscillate when inputs are short-circuited or open-circuited. To conservepower, the receiver automatically turns off when a link partner is notconnected.

Serial links A and B are designed according to well-known principles.For example, in one embodiment, each link comprises 8 differentialpairs. Four pairs transmit and four pairs receive. Each differentialpair forms a point-to-point connection between a differentialtransmitter in one node and a differential receiver in another node.Each point-to-point connection is physically constructed with a pair ofbalanced, impedance controlled, copper conductors. These conductors canbe conventional etch on printed circuit boards (PCB's) or twisted-paircables.

Bridge Apparatus Logic

The following describes the logic of the bridge apparatus constructed inaccordance with the present invention.

In one embodiment of the present invention the bridge apparatus depictedin FIG. 2 operates as a native device. In another embodiment of thepresent invention, bridge apparatus operates as a translative device.When operating as a native device, bridge apparatus interfaces directlywith the Data Transmission Protocol.

When operating as a translative device, bridge apparatus translates oneprotocol to another, e.g. the data transmission protocol of the presentinvention to a protocol such as PCI in one embodiment and vice versa.Techniques for translating one protocol to another are well-known in theart. For example, one such technique involves protocol mapping, wherein,an Ethernet-to-Data transmission protocol component could be used toconvert Ethernet packets into the Data Transmission Protocol frames.There is no strict translation between the Ethernet and the DataTransmission Protocol, but mapping well known addresses (registerassignments) would allow Data Transmission Protocol to interact with theEthernet. A similar approach could be used with almost any existingprotocol.

Addressing

In an embodiment of the present invention, bridge apparatus 200 supportsthree addressing models—a fabric addressing model and in an exemplaryembodiment, a PCI addressing model, although one of ordinary skill inthe art could see that alternate addressing models could be implementedusing the present invention. In this exemplary embodiment, to supportthese two addressing models, Bridge apparatus 200 consists of two majorfunctions—a PCI-to-PCI bridge (Bridge) function and a Gateway function.The Bridge function supports the PCI addressing model within the fabricand the Gateway function performs translations between the PCI andfabric addressing models. The Bridge function can be disabled, but theGateway function is always present.

Address Routing Model

In the exemplary embodiment described herein, the fabric addressingmodel of the present invention utilizes a path, a channel, and anoffset. The Gateway function is the only function in the presentinvention that uses the fabric addressing model. The Bridge functionadheres solely to the PCI addressing model and does not understandfabric addresses. The Gateway function translates between PCI addressesand fabric addresses using the Segment, Path, and Channel Tables.

The Data Transmission Protocol designates destination Channel 255 forregister mapping in fabric address space. The Gateway implements astandard set of the Data Transmission Protocol registers, called theData Transmission Protocol Component Header. These registers areaccessible through Channel 255 starting at offset 0. The Gateway's CSRsare also accessible through Channel 255 starting at the boundary (offset4000h). Additionally, Bridge and Gateway configuration registers aredual-mapped into Channel 255 address space.

PCI Addressing Model of the Bridge Function

The Bridge function comprises part of a PCI hierarchy in the fabric andperforms translations between PCI transactions and The Data TransmissionProtocol address-routed frames. In the PCI addressing model, the Gatewayfunction looks like a PCI device on the bus that is the edge node's PCIinterface.

In this exemplary embodiment, the Bridge is modeled as a standard,transparent, PCI-to-PCI Bridge. It implements a Type1 configurationheader. It forwards PCI configuration, I/O, and memory transactions todownstream devices through the fabric. The bridge function of an edgenode operates with the standard PCI plug-and-play initialization code.

The root strapping pin indicates whether the edge node is a root or aleaf, and, as a result, if the PCI bus is primary or secondary. If it isa root bridge, the PCI bus is primary, and downstream transactions flowfrom PCI to the fabric and upstream transactions flow from the fabric toPCI. In this case, the Bridge's configuration registers are accessibleusing a Type0 configuration transaction on the PCI bus, and are notaccessible from the fabric interface.

If the bridge is a leaf, the PCI bus is secondary, and downstreamtransactions flow from the fabric to the PCI bus, and upstreamtransactions flow from the PCI bus to the fabric. The Bridge'sconfiguration registers are only accessible from the link side if a PCIframe is received indicating a Type0 configuration operation. The Bridgeconverts between PCI transactions and address-routed frames, but theaddress model remains the same. An address-routed frame is a frame thatis directed through the fabric by decoding its address against a set ofaddress ranges at each node (switch or endpoint). The address ranges aredefined at each node by the standard PCI-to-PCI bridge base and limitregisters.

By default, Bridge functions are fully transparent. This means thatevery PCI device, including the Gateway, is fully visible to the hostand all resources are mapped into the global PCI memory map. Within TheData Transmission Protocol, a local subsystem may have resources thatshould be hidden from the host. Perhaps a local processor manages theseresources, or the resources consume a lot of space in the global addressmap. When the bridge is a leaf, three mechanisms exist to control accessto and from secondary bus devices. In one embodiment of the presentinvention it is possible to hide Gateway translation address windowsBAR2 through BAR5 and hide any or all-secondary bus devices through anIDSEL mask. Finally, it is possible to lock upstream forwarding insideor outside of a programmable window.

PCI Addressing Model of the Gateway Function

In this exemplary embodiment the Gateway is modeled as a PCI device. Ithas one addressable PCI interface, which always faces the PCI bus. TheGateway translates PCI transactions into either path-routed ormulti-cast frames. For path-routed frames, it assigns a set of turnsthrough the fabric to a terminus. Only the initial decode on the PCI busis necessary.

To translate and forward PCI transactions into the fabric, the Gatewayimplements a Type0 configuration register space and dual-maps it intoCSR space. It also needs help from additional software that initializesthe appropriate tables and registers in its CSRs. The software accessesthese tables and registers in the Gateway's first two BARs using memoryand I/O transactions.

Path Routing Mode

The path routing model of the present invention utilizes a path, achannel, and an offset. The Gateway function is the only function in anedge node that uses the fabric-addressing model. The Bridge functionuses the PCI addressing model exclusively. It does not understand TheData Transmission Protocol fabric addresses. The Gateway functiontranslates between PCI addresses and fabric addresses using the segment,path, and channel tables.

Channel 255 is designated as the destination channel (address space) fordevice registers. The Gateway function contains a standard set of TheData Transmission Protocol registers, called the Data TransmissionProtocol Component Header, that are accessible through channel 255 atoffset 0. The Gateway's CSRs are accessible through channel 255 startingat the 16 KByte offset boundary (offset 4000h). Bridge and Gatewayfunction configuration registers are also dual-mapped into channel 255space.

Functional Modes

Bridge apparatus 200 may be used in one of three functional modes, thatis, multi-function mode, secondary subordinate mode or Gateway-onlymode. These modes, are based on whether the Bridge function is enabledor disabled. In the case where the bridge function is enabled, thebridge apparatus 200 can operate in either as a root bridge or a leafbridge.

Bridge Apparatus as a Root Bridge—Multi-Function Mode

FIG. 4A depicts an embodiment of a bridge apparatus 200 constructed inaccordance with the present invention wherein bridge apparatus 200 isoperating as a root bridge. As shown, when bridge apparatus 200 is aroot, the PCI interface is connected to the primary bus and the fabricinterface is connected to and/or represents the secondary bus. In thismode, bridge apparatus 200 is a multi-function device, that is, itoperates both the above mentioned gateway and bridge functions. Anyaccess to the bridge function must specify one function and any accessto the gateway function must specify another function. For example, inone embodiment, the PCI bus accesses configuration space using a Type0configuration transaction, but a single IDSEL signal is used. Accessesto the bridge function must specify Function0 and accesses to thegateway function must specify Function1.

Bridge apparatus 200 starts the fabric enumeration process. The root isthe most upstream bridge in the fabric's PCI hierarchy. All PCIconfiguration starts from the PCI bus connected to the root bridge.

Depending on whether or not they are bundled, the serial links connectto one or two downstream nodes.

Bridge Apparatus as a Leaf Bridge—Secondary Subordinate Mode

FIG. 4B is one embodiment of a bridge apparatus 200 constructed inaccordance with the present invention wherein the bridge apparatus isoperating as a leaf bridge. As a leaf bridge, the PCI interface ofbridge apparatus 200 connects to the secondary bus and one of the portson the fabric interface is the primary bus. In this configuration, theGateway is a separate PCI device located on the Bridge's secondary busof the bridge apparatus 200. It is in the same level of hierarchy as thesecondary bus devices. This mode is also referred to as secondarysubordinate mode.

If the two serial links are also two different ports, then the root portof bridge apparatus 200 is Port0 , and the other port (Por1), is notpart of the PCI hierarchy (unless the root is attached to a pair ofindependent fabrics or unless the root is connected in a three bridgering with a pair of leaf bridges, in which case they can both be part ofthe PCI heirarchy). However, if the port maps are set up appropriatelyby software, smart address-routing can use Port1 for upstreamtransactions by positively decoding against its Port Map table.

By default, the Bridge is fully transparent. Every PCI device downstreamof the Bridge, including the Gateway functions of leaf nodes, is fullyvisible to the host and their resources are mapped into the global PCImemory map.

A local PCI sub-system may have resources that it wishes to hide fromthe host, either because a local processor manages these resources, orbecause the resources consume a large amount of space in the globaladdress map. When Aruba is a leaf, three mechanisms are provided tocontrol access to and from secondary bus devices:

-   -   Hide Gateway address windows BAR2 through BAR5.    -   Hide any or all secondary bus devices through an IDSEL mask.    -   Block upstream memory forwarding inside or outside of a        programmable window.        Bridge Apparatus as a Gateway Only Device—Gateway-Only Mode

FIG. 4C depicts an embodiment of a bridge apparatus 200 constructed inaccordance with the present invention wherein the bridge apparatus isoperating as a gateway only device. Here, the bridge function ofmulti-function bridge apparatus 200 is disabled. When configured thusly,the PCI bus cannot “see” the disabled bridge function; it sees only thegateway function.

Root bridge function typically creates the PCI hierarchy in the fabric.However, a bridge apparatus 200 configured for gateway-only mode andlocated at the rootwill isolate the entire fabric, thereby completelyisolating (hiding) anyotherwise fabric attached PCI subsystem from thePCI hierarchy.

A root gateway-only device may still start the fabric enumerationprocess and can also sends PCI transactions through the fabric viapath-routed or multi-cast frames.

The following table summarizes the functional modes and properties ofeach mode.

MODE CONFIGURATION COMMENTS Root PCI is primary bus Only one bridge inthe sys- Bridge Bridge and Gateway provide a tem can be configured as(multi- multifunction configuration the root. function) interface to thehost. Leaf PCI is secondary bus. Gateway must be able to Bridge Bridgeand Gateway provide a respond to PCI frames from Secon- hierarchicalconfiguration the fabric addressing BAR0 dary model to the host. or BAR1(CSRs). Subor- Gateway is a PCI device on the Gateway BARs have twodinate) secondary bus of the Bridge. modes of visibility to the Enhancedaddressing modes host: can be enabled on the bridge. All BARs visibleOnly BAR0 and BAR1 visible Gateway Provides no PCI addressing All framestranslated are Only support into or out of the fabric path routedframes. (a protocol-native device). Provides completely private localaddressing support.Address Decoding

What follows is a detailed description of address decoding according tothe present invention for the exemplary PCI addressing model in thefabric addressing model.

Operation

In the described embodiment, the multi-function bridge apparatus useslittle-endian byte ordering for CRC computation, 8B/10B encoding anddecoding, comma detection, and transmit and receive serialization.

Furthermore, the link level transmission protocol uses 8B/10B encodingfor all serial data. This coding scheme is widely used within theindustry for both Ethernet and Fiber Channel applications. 8B/10Bencoding converts every byte of data (eight bits) into a 10-bit codecharacter. Every byte of data consumes 10 bit intervals on the link. The10-bit 8B/10B code has a 2 10 code space. This code space supportstransmission of all 256 possible data byte values as well as a small setof additional special symbols or control codes. The Data TransmissionProtocol uses one control code to establish link synchronization. Theprotocol uses a second control code for propagating maskable resets. Ituses a third control code for propagating unmaskable resets. It uses afouth control code for address routed resets. Finally, it uses a fifthcontrol code for distributing a frame clock.

Encoding/Decoding

Prior to transmission, unencoded data bytes are encoded into codedcharacters. Encoding or decoding can be accomplished using various meansthat are well known in the art. These well known methods include, forexample 8B/10B, 466 encoding or other psuedo randomization techniques.It should be noted however, that regardless of the encoding/decodingmethed utilized, any error in encoding under the present inventionresults in a retransmission.

Data Frames

Data frames are the data carriers of an interconnection fabric. Theycarry normal read and write data as well as control and error data. Thestructure of an exemplary data frame that is to be stored and forwardedby a switch constructed in accordance with the present invention isshown in FIG. 5A. Generically, data frames of the present invention areassembled from the components shown in FIG. 5A. These components are thelink overhead and header (overhead) and data (payload).

Frames are transmitted with two protocol overhead layers. One layer isin the frame header, which is an internal aspect of the frame, and theother is a lower-level link overhead. Link overhead is typicallydifferent every time a frame is transmitted from one component to thenext. Link overhead fields are needed to maintain the integrity of thetransmission protocol.

Most frame fields convey an essentially fixed set of information fromthe frame's origin to its terminus. However, link overhead fields servea link management function, and carry updated link status between linkpartners along a frame's route, rather than from origin to terminus withthe remainder of the frame. Link overhead fields include the: Wire(Buffer) Credit field, which indicates the type and number of wires(Buffer) to be credited back to the sender, the CRC field, whichprovides a check at the end of the frame to ensure that a frame has beenproperly transmitted; and a Frame Sequence Number field, which containstwo completely independent values which keep frames in order when framesare transported.

Common header fields in accordance with the present invention are asfollows. The Additional Frame Size field indicates how many additional(more than one) lines are in the frame. The Channel Number field of apath-routed frame indicates the target destination channel of the writetransaction. The Offset field of path routed frames contains a 42-bitrelative offset from the indicated channel's base address that is usedas the starting address for the associated operation. The Address Fieldof address routed frames, which subsumes the channel number and offsetfields of path routed frames, is a 48-bit quantity that, when combinedwith bridge resident configuration information, is used to generatestandard 32-bit or 64-bit addresses, such as are seen on a PCI bus. TheClass of Service field indicates the frame class of service and therebyits priority. The Link Overhead field indicates whether a frame's linkoverhead is internal or external. The Orphan Byte field indicates, whenset, that the associated frame contains an Orphan Byte Count (OBC) byte.An OBC byte indicates the degree of internal frame fragmentationoccurring at the end of a frame. The Path field contains the route to befollowed by a path-routed frame, or the path followed by an addressrouted frame, as it migrates from its origin to its terminus. The formatof the path specification field for a Path Routed Frame and an AddressRouted Frame is depicted in FIGS. 5B and 5C respectively. Morespecifically, the path specification field contains the route the dataframe travel must travel or have traveled as it migrates from its originto its terminus. The Path specification field comprises one three-bitturn counter field 501 and seven three-bit turn fields 502–507.Collectively, the seven turn fields are referred to as a turn list.

In the path routed data frame depicted in FIG. 5B, the turn counter 501keeps track of the number of times a frame has been forwarded within theinterconnect fabric. Each turn value 502–507 tells the switch how manylinks/ports an entering data frame should skip, always moving in aclockwise direction, before transmitting the frame. A turn's value canrange from 0 through 7 using octal digits. For example, a value of 2 inthe turn field indicates that a data frame should skip over twolinks/ports and exit the switch out of the third link/port. Turn list610 is, therefore, an array of relative path directions. An active turnlist is that portion of the turn list that is actually used to route aframe from the origin to the terminus.

In the address routed data frames depicted in FIG. 5C, the pathspecification field contains the path completed by the data frame as ittravels from the origin to the terminus. The origin sends an empty pathspecification, i.e. the turn count and all seven turns are set to 0, tothe next component (typically a switch). This component then routes theframe based on its address and updates the path specification with therelative port number, turn value, used to forward the frame. To updatethe path: 1. The turn count is used as an index into the turn list. 2.The relative port number value is placed in the indexed turn. 3. Theturn count is incremented.

This effectively tracks the path followed by the data frame and allowsthe terminus to route responses back to the origin. From an errorperspective, the path under construction appears to be the same as anyother path. Based on the turn count, the data frame's path can beinverted and reversed to send the frame back to the originator. Thispath specification field provides the device by which frames can beaddress routed from origin to terminus and path routed back to theorigin from the terminus.

The Relaxed Ordering field is a single-bit field, which indicateswhether the frame can be delivered early and out-of-order. The RequestTransaction Number field contains the transaction number of theassociated requesting frame. The Request Mode field indicates the typeof read request. The Target Region field codes the terminus address ortarget. The Transaction Number field is used in two independent ways,operations that require a response from their target devices make astate entry in the initiating edge node of the operation.

Switch

FIG. 3A is a diagram depicting an embodiment of a switch constructed inaccordance with the present invention. As shown, switch 300 includes abody and a plurality of ports connected therewith, each of which furtherinclude a bi-directional data flow link. Furthermore, associated witheach port is a turn value, which, as described more fully below, is usedfor routing purposes. Switch 300 further incorporates hardware andsoftware programming which enables it to simultaneously support threeaddressing models, a fabric or turn address model, a PCI address model,and a multicast distribution model. When operating in the fabric addressmodel and/or multicast distribution model, switch 300 appears as aswitch to configuration software. When operating in the PC1 addressmodel, switch 300 appears as a PCI-to-PCI bridge to configurationsoftware.

Switch 300 can be implemented as a store and forward switch although inone embodiment it is possible to implement the present invention in sucha manner that the switch does not need to finishing storing a framebefore it begins to forward the said same frame. When a data framearrives at switch 300 through one port, switch 300 examines and updatesthe data frame's path specification and then forwards the data frame outof the switch through a port different from the port the data frameentered. Whether the ports of a switch are connected to another switchor an edge node/bridge has no effect on the switch; it simply forwardsdata frames based on the data frame's path specification.

As shown in FIG. 3A, the switch contains nine ports including an inputport and the remaining ports labeled with a turn value from 0–7.However, the switch can contain a minimum of 2 ports (somebi-directional links are bundled, others are disabled) up to a maximumof 9 ports or a maximum of 18 links which are bundled to form 9 ports.(one bi-directional link per port).

FIGS. 3B and 3C show a diagram depicting an exemplary implementation ofthe relationship between links, ports, wherein the turns in a switch areconfigured to have four ports. The relationship described is not meantto be exclusive of other implementations but is descriptive of aparticular embodiment. As shown therein, the six links are physicallynumbered 0–5. When there is only one link per port (unbundled), the portnumber is the same as the link number. See FIG. 3B. When links/ports arebundled as in FIG. 3B, the port number of each individual port withinthe bundle is the same and is the port number of the lowest numberedlink/port of the bundle. As shown in the example, port 1/link 1 and port5/link 5 are bundled together and comprises bundled links 1 and 5. Sinceport 1/link 1 is the lowest numbered link/port in the bundle, port5/link 5 is now re-labeled port 1/link 5. As further illustration, port2/link 2 and port 3/link 3 are also bundled together in FIG. 3B.Consequently, since link 2 is the lowest numbered link/port in thebundle, port 3/link 3 is relabeled port 2/link 3.

The actual turn value for a given port will differ depending on the portupon which a data frame enters a switch (“input port”). That is, theturn value is always relative to the input port. As shown in FIG. 3B,when links are unbundled, each port except for the input port will havea valid turn value associated with it. When links are bundled as in FIG.3B, the turn value that is associated with the lowest numbered link inthe bundle is a valid turn value. As shown in FIG. 3B, for example, adata frame enters the switch through port 4/link 4. Moving in aclockwise direction, a turn value of 0 within a turn path specificationwould route (more on routing later) the input port 4 data frame to port1/link 5 (formerly, port 5/link 5). A turn value of 1 within a turn pathspecification would route the input port 4 data frame to port 0/link 0.A turn value of 2 within a turn path specification would route the inputport 4 data frame to port 0/link 0. A turn value of 3 within a turn pathspecification would route an input port 4 data frame to port 1/link 1and finally, a turn value of 4 within a turn path specification wouldroute the input port 4 data frame to port 2/link 3.

FIG. 3D is a table that lists the valid and invalid turns for each portin FIG. 3C when it is an input port.

Although switch 300 provides for a maximum of six ports having five turnvalue designations and one input port designation associated therewith,a data frame's path specification is based on all switchs having themaximum of nine allowable ports (eight turn value designations and oneinput port designation.) A path specification that routes a frame to anonexistent port results in a path error. Exactly which turns are notvalid depends on two things, the configuration of the switch (i.e.whether the switch is configured for less than the maximum number ofports) and the input port.

FIG. 3C also shows path routing through a switch with nine ports, whenmost of the ports are nonexistent (as opposed to having bundledlinks/ports). As far as the path specification is concerned, thefunction of the switches is the same. The table of FIG. 3D also liststhe valid and invalid turns for each port in FIG. 3C when it is an inputport with nonexistent ports.

Switch Routing in Detail

Path Routing

When routing a frame, the origin of the frame knows how many turns theframe will take, but this information is not placed in the frame's pathspecification. With the exception of frames targeted directly atswitches, all frames begin their journey with a turn count of 0. When arouted frame arrives at a switch, the switch uses the turn count toindex the turn list. The indexed turn list entry contains the number ofports that the frame should skip clockwise before exiting. After usingthe turn count to index the turn list, the switch increments the frame'sturn count. When a frame finishes its journey, its turn count indicatesthe number of switches it visited along its path.

The incrementing turn count, a feature of all routed frames 5[?], is themechanism that prevents frames from entering infinite routing loops. Ifa frame arrives at switch with a turn count of 7, then a routing errorhas occurred. Routing errors require the switch detecting the error tobuild two event frames. One event frame is sent to the node designatedto handle routing errors, and the other event frame is sent to theoriginator of the erroneous frame.

A path is specified as an octal number with up to seven digits. Thispath excludes the initial turn taken out of an edge node. This meansthat an edge node with four ports to four different switches would carryno indication of which port the edge node used to send the frame. Theedge node's initial port usage is not necessary to the fabric path.

In one embodiment of a nomenclature for expressing paths, this can bedone be enclosing the initial turn in parenthesis. For example, path(2)1357 indicates a four-turn path (turns 1, 3, 5, and 7) that exitedits initiator on port 2. It is also sometimes useful to indicate thecurrent position of a frame within its path. This is done with a colonbetween the last turn taken and the next turn to be taken. For example,route 75:421 indicates a five-turn path, of which only the first twohops have been traversed. Similarly, (1) 1234 indicates a four-turn paththat is still in its originating edge node, and 123456: indicates asix-turn path that has reached its target. It will be obvious to oneskilled in the art that modifications and alterations to this method canbe made to achieve the purposes of the present invention.

A path can contain up to seven turns and consumes 24 bits of headerspace (a seven-entry three-bit turn list and a three-bit turn count).Address routed PCI frames must have the path they traverse within afabric recorded as they traverse a fabric. Such routes are limited tothe same seven-turn limit as any other routed traffic. (The PCI has aninherent 256-bus limit for legacy unrouted configurations and aseven-turn limit does not materially limit the effective span of fabricswith such limited connectivity capabilities.)

Path specifications indicate the number of active turns, but a pathspecification itself has no such indication within a frame at itsorigin. From within a frame, the active portion of a path is fully knownonly when it reaches its target and the turn count can be interrogated.In path specifications that terminate with one or more 0 turns, theterminating 0 turns should not be considered a reasonable indication ofpath length, because there are almost invariably a reasonable set ofvalid paths with one or more active, but terminal, 0 turns. Conversely,nonzero turn indices in a path do provide a lower bound on the length ofa path. For example, a path turn list of 2435000 indicates at least fourturns, and as many as seven turns, if all the 0 turns are active.

Fabric Ennumertion

Overview

Fabric enumeration gives each component in the fabric an identifier.This gives moderate depth to the fabric topology. During enumeration,all components in the fabric are assigned a unique identifier called thefabric ID (FID). The component designated as the root node initiatesthis unique value assignment.

Topology and Enumeration

This section describes fabric topology building and enumeration.Components that are used to build the fabric are designated asbridge(n), switch(n), or switching-bridge(n), where n is the FID of thecomponent. The root node always assigns itself the root FID. The rootnode then assigns an FID to each component attached to its links. Thelink partners in turn assign FID values to their attached components.This process continues until all fabric components are assigned an FID.Because components in the fabric can initially be cross-connected in anynumber of combinations, they accept FIDs based upon a simple set ofpredefined rules. A component will accept an FID the FID being offeredis lower in value than its current FID. All components initialize theirFIDs to the maximum FID.

These simple FID acceptance rules ensure a valid fabric topologygeneration.

During link synchronization, the root node determines the type ofcomponents attached to its links. If the root node finds that none ofits link partners are switches (all are bridges), it signals this byassigning edge-node only FIDs to adjacent nodes.

The FID value consists of a parallel fabric number and a pathspecification. The path consists of a turn count and seven turns, and isthe shortest path from the root node upon completion of fabricenumeration. A components FID is stored in a register. Duringenumeration an FID is evaluated in accordance with the FID acceptancerules, using the syntax: (PFN, Turn Count, Turns) where PFN is the mostsignificant term and the Turns value is always represented as an octalinteger. The maximum FID value is: (7,7,7777777), also known as thereset FID (the reset FID is not an illegal FID—it is possible that in avery large fabric a node could be assigned the reset FID as its run-timeFID). The smallest FID value is (0,0,R) which is a specialrepresentation of an otherwise illegal FID used to specify the root FID.

For example, an FID value where PFN=0, turn count=3, and turns=657,would be evaluated as (0,3,657). Furthermore, as an example of the FIDacceptance rules, the FID (0,3,657) is lower in value than the FID(1,2,10). There are two conditions when the Turn Count is 0:

-   -   The root node always gives itself FID (0,0,R    -   There are no turns; therefore, the Turn Count is 0 and the Turns        value is null or unspecified and indicated by N. For example,        (0,0,N).

Each component in the fabric must have an FID prior to defining ports.Ports are a logical representation of links. A single port can be asingle link or a bundle of multiple links. Links must be categorized aseither inactive, bundled, or non bundled to determine their logicalcorrelation to ports. This helps to define the ports available in thecomponent. During fabric enumeration, hardware defines port number andlink relationships.

PCI Spanning Tree Generation

An important aspect of the I-Am/You-Are protocol is its ability togenerate a spanning tree. A spanning tree is directed, acyclic graph (awell known mathematical concept in the area of graph theory from a rootto every node in a fabric. The acyclic nature of this graph requiresthat some of the links between nodes in the fabric be excluded from thetree. The spanning tree will have one and only one path from each nodein the graph to every other node in the graph. The spanning tree can bethought of as superimposed on its associated fabric with some of thelinks in the fabric active (those that appear in the spanning tree) andsome of the links inactive (those not included in the spanning tree).

The I-Am/You-Are protocol results in a parent-child relationship betweensome nodes and a peer relationship between other nodes. If some node B'sFID contains the sub-path of some other node A's FID, then node A isnode B's parent (node B is node A's child) and the link between A and Bin the fabric will be an active link in the superimposed spanning tree.An FID (X,Y,Z) contains the sub-path of another FID (X′,Y′,Z′) if andonly if X=X′; Y=X+1; and the first Y′ turns of Z exactly match the firstY′ turns of Z′. If a pair of nodes share a common link, but their FIDsdo not have a sub-path relationship (parent-child), then the nodes arepeers and the link between the nodes is not included in the associatefabric's spanning tree.

The spanning tree is important for two reasons: (1) the spanning treeprovides the shortest path from every node the fabric to the root of thefabric; and (2) PCI bus hierarchies are mathematically represented bydirected acyclic graphs. Any attempt to superimpose a PCI bus hierarchyon a fabric must be able logically restrict legacy PCI bus transactionsto the superimposed spanning tree. The parent/child—peer dichotomy isused to make links transparent and opaque to legacy PCI traffic, and inso doing create the logical view of a tree superimposed on a fabricnecessary for the proper operation of PCI.

Bridge Only Fabric

A bridge only fabric contains no switches; the fully connected fabric ismade entirely of bridges. In such a fabric, a component FED is assignedusing the following method. [FIG. 6A]

-   1. The root node gives itself FID (0,0,R). It is bridge (0,0,R).-   2. Bridge (0,0,R) then generates an FID for its link partners after    first scanning all the links to determine if any of its link    partners are switch components.-   3. Bridge (0,0,R) then sends the FID frame (7,0,N) to the first    active link, which is link 0. This link partner has its reset FID of    (7,7,7777777), and it accepts the smaller FID (7,0,N).    It is now designated as bridge (7,0,N).-   4. Bridge (0,0,R) next sends the FID frame to the next link. This    informs the link partner on link 1 that its FID is (6,0,N).-   5. The link partner on link 1 of bridge (0,0,R) likewise still has    its reset FID, and it accepts FID (6,0,N) using the FID acceptance    rules described above. It is now designated as bridge (1,0,N).

When only bridges are used in the fabric, each leaf node is a linkpartner of another leaf node. Accordingly, each leaf node notifies itspeer leaf of its, but because leaf nodes never attempt to set the FIDsof their peers, the roots initial You-Are frames are the only You-Areframes ever sent.

Bridge and Switch Fabric

This section describes configurations including both bridges andswitches. FIG. 6B is a diagram that depicts a configuration with fivebridges (one root node and four leaf nodes) and one switch. The rootnode assigns each fabric component an FED, enumerated as follows:

-   1. The root node assigns itself FED (0,0,R).-   2. The root node sees the switch component as a link partner and    assigns it FID (0,0,N). The switch accepts this FID and starts    enumerating its link partners.-   3. The switch assigns an FID to each leaf node based on the port    through which it connects to that leaf node.-   4. Following the FID acceptance rules, all the components in the    fabric accept FIDs from the switch because it is the parent link    partner. Each component then assigns an FID to all of its link    partners. There are three consequences when a component accepts an    FID.    -   The node that sent the FID becomes the parent.    -   The node that accepted the FID becomes the child.    -   The port connecting the parent and child is the upstream port        (or port 8).        PCI pnp Enumeration

After FID enumeration, the fabric components are ready for softwarediscovery such as:

-   -   Standard PCI pnp BIOS enumeration using address routed        configuration scanning, or    -   Fabric component discovery using path routed scanning.        This section describes how that occurs in a fabric topology.

PCI legacy software discovers devices using hardware mechanisms designedto generate PCI configuration cycles. PCI devices are required torespond to these configuration cycles. The required response of a PCIdevice to configuration cycles enables the system to determine that aPCI device exists at that fixed configuration space location.Conversely, if there was no response then a PCI device does not exist atthat location. A tree of PCI devices is built using a depth-firstscanning algorithm.

To standard PCI pnp configuration software, the fabric topology in FIG.6A appears as shown in FIG. 6B. The fabric appears as a fully compliantPCI topology, because the port that makes a link from the parent node tothe child node uses its FID number to define its device number.Specifically, its port number becomes its device number (for example,port 3 is device 3).

PCI pnp Discovery

During pnp discovery, PCI configuration software enumerates the buses.To any PCI legacy enumeration software, a bridge or switch presentsitself as if it were a standard PCI-to-PCI (P2P) bridge. FIG. 6B showsan exemplary configuration software diagram wherein the software:

-   1. Scans bus 0 looking for any PCI device and discovers a device on    bus 0 as a PCI-to-PCI bridge (0,0,R). Software then sets its primary    bus to 0, its secondary bus to 1, and its subordinate bus    temporarily to 0xFF.-   2. Starts scanning downstream of P2P bridge (0,0,R) with a type 1    configuration cycle looking at bus 1, device 0, function 0. The port    number and the device number are mapped 1:1.-   3. Discovers device 0 on bus 1 as P2P bridge (0,0,N). Configuration    software sets P2P bridge (0,0,N) primary bus to 1, its secondary bus    to 2, and its subordinate bus temporarily to 0xFF.-   4. Starts scanning downstream of P2P bridge (0,0,N) with a type 1    configuration cycle looking at all devices on bus 2.-   5. Discovers device 0 on bus 2 as P2P bridge (0,1,0). Configuration    software sets P2P bridge (0,1,0) primary bus to 2, its secondary bus    to 3, and its subordinate bus temporarily to 0xFF.-   6. Starts scanning downstream of P2P bridge (0,1,0) with a type 1    configuration cycle looking at all devices on bus 3.-   7. Any device on bus 3 responds to these configuration cycles and    the resource requests are tallied for later address mapping.-   8. After no more P2P bridges are discovered on bus 3, the    subordinate bus number in P2P bridge (0,1,0) is set to 3.-   9. The PCI software then resumes scanning all functions on bus 2 at    device 1.-   10. It discovers device 1 on bus 2 as P2P bridge (0,1,1).    Configuration software sets its primary bus to 2, its secondary bus    to 4, and its subordinate bus temporarily to 0xFF.-   11. Starts scanning downstream of P2P bridge (0,1,1) with a type 1    configuration cycle looking at all devices on bus 4.-   12. Any device on bus 4 responds to these configuration cycles and    the resource requests are tallied for later address mapping.-   13. After no more P2P bridges are discovered on bus 4, the    subordinate bus number in P2P bridge (0,1,1) is set to 4.-   14. Resumes scanning on bus 2 at device 2. This sequence of    assigning bus numbers continues until all P2P bridges and PCI    devices are discovered from bus 2.-   15. After all the P2P bridges are discovered on bus 2, the    subordinate bus number in P2P bridge (0,0,N) and P2P bridge (0,0,R)    are set to 6 (highest bus number assigned in the topology shown in    FIG. 6B).    PCI pnp Resource Allocation

After completing bus enumeration, the system scans all the PCI devicesand determines their resource requirements. The system also generatesthe PCI address paths (base and limit windows) to all the P2P bridgedevices. These address windows include I/O space, memory space, andprefetchable memory space.

In accordance with the current invention, each component must snoop eachdownstream write transaction to any other components connected to itsports. This mechanism allows a parent node to determine the port towhich it should send address routed transactions (configuration space,memory space, and I/O space). Each node has a table that stores this PCIconfiguration write information about each of its ports. This table iscalled the Port Map Table (PMT).

Within the node, the port from which a specific PCI transaction can exitis based on a PMT entry. By keeping this information, the parent nodecan precisely determine the port to which it should send address routedtransactions. Any configuration space write (byte, short [16 bits],Dword [32 bits]) to the child node's configuration space registers issnooped by the parent and the entry for that child may be used toupdated the parent's PMT. The PMT contains a base and limit entry foreach port in the node. The hardware generates this table during the pnpphase of topology enumeration and configuration. Table 6-1 shows atypical PMT entry.

After assigning bus numbers to all logical PCI buses, configurationsoftware starts mapping address windows to devices on those buses bytallying previously discovered resource requirements and setting theaddress windows in each P2P bridge in the path. This is analogous to oneside of a PCI-to-PCI bridge, because on that side a transaction isclaimed on behalf of an initiator. On the other side it differs, becausethe transaction can exit any of the fabric ports; and while the switchmantains the logical view of a PCI-to-PCI bridge, i.e. it has oneprimary and only one secondary interface, the PMT is required to steerthe transaction to the correct port and consequently to the correctfabric component of the present invention Each entry in the PMT containsa copy of each child nodes' P2P bridge configuration registers. Thistable is indexed by using the port number as the offset from the startof the table.

Port Map Table Update Example

FIG. 6C depicts a diagram showing the relationship between configurationregisters and the PMT, where the bridges (root and leaf nodes) and theswitch are detected by pnp configuration software as 6 P2P bridges in aPCI legacy topology. As part of the standard PCI enumeration,configuration software assigns bus numbers to P2P bridges prior tomemory or I/O allocation. When software assigns bus numbers throughnormal PCI configuration write cycles, the write is snooped by theparent of the target node. After bus numbers are assigned, theenumerating software scans once again to discover and tally the resourcerequirements of standard PCI devices (non-node devices). As it scanseach bus and assigns each device addresses in I/O and memory space, thesoftware also initializes the base and limit registers of P2P bridges toreflect the resources assigned on that bus. All downstream configurationspace writes, including base, limit, and command register are snooped bythe parent for entry into its Port Map Table.

Fabric Node Discovery

The Data Transmission Protocol has a non-PCI mechanism that identifiesfabric components. Fabric node discovery software builds a graph, orconnection list, of all nodes in the fabric. Fabric discovery thendetermines the shortest path between bridges by using the FID assignedto the node. The shortest path is the path with the fewest turns. When apath already exists and then a shorter path is found during discovery,the shorter path is used and the longer path becomes an alternate pathUsing the shortest path is always more favorable in building the bridgerelationships. Alternate paths can be used if the shortest path becomesunavailable.

Fabric Node Paths

Software can be used to establish PCI memory space mapped connectionsbetween bridges in a fabric. Starting at some given bridge, softwareinterrogates its port state table to determine all of its active ports(ports that are connected to other nodes). It then steps over to itsneighboring nodes and repeats the process, checking the FID of itsneighbor and the set of active ports on its neighbor. It then steps toits neighbor's neighbors, and so forth until all the nodes in a fabrichave been interrogated. The scanning algorithm used first to identifythe graph relationship of nodes can be either depth first or breadth.The software uses a node's FID value to determine whether the node hasalready been encountered by the discovery software, and afterconstructing a software graph analogue of the fabric, the shortest pathfrom any given node to any other given node can be determined, using anynumber of well-known shortest path graph search. Software can then beused to initialize a bridge's path and segment tables using thisshortest path information.

Parallel Fabric Enumeration

A parallel fabric is one in which leaf bridges are connected to eachother and to their root bridges via two or more disjoint fabrics. Twofabrics A and B are disjoint if if and only if: there exists a switchonly path from each switch in A to every other switches in A, thereexist a switch only path from each switch in B and every other switch inB, and there are no switch only paths from any switch in A to any switchin B. A switch only path is one that includes no bridges FIG. 6D depictsa diagram showing a simple parallel fabric configuration.

The root bridge of The Data Transmission Protocol fabric is identifiedby either a hardware strapping pin that identifies a bridge device asthe root, or a software mechanism that configures an bridge as the root.In a parallel fabric such as shown in FIG. 6D, the strapping pins areconfigured for legacy PCI discovery such that the pin for root node A isde-asserted and the pin for root node A+1 is asserted. The pinscorrespond to bit 0 of the PFN; consequently, using the syntax (PFN,TurnCount,Turns), root node A assigns itself FID (0,0,R) and root node A+2assigns itself FID (2,0,R). Following the sequence given in the sectionof this description concerning Bridge and Switch Fabric, each root nodeattempts to assign an FID to the fabric components, but according to theFID acceptance rules, only root node A succeeds because the FIDs rootnode A offers to switches are lower in value than the FIDs offered byroot node A+2.

Having now described one or more embodiments of the invention, it shouldbe apparent to those skilled in the art that the foregoing isillustrative only and not limiting, having been presented by way ofexample only. All the features disclosed in this specification(including any accompanying claims, abstract, and drawings) may bereplaced by alternative features serving the same purpose, equivalentsor similar purpose, unless expressly stated otherwise. Therefore,numerous other embodiments of the modifications thereof are contemplatedas falling within the scope of the present invention.

1. A method for fabric topology building and enumeration for connectingcomponents and devices located on one or more buses comprising:providing a fabric comprising at least one interconnect componentcomprising a plurality of links adapted to connect to other interconnectcomponents for connecting at least two devices wherein a firstinterconnect component is designated as a root node; assigning a firstnumerical value as an identifier to said root node; assigning andtransmitting subsequent numerical values as an identifier to eachinterconnect component, wherein said identifier assigned to a particularinterconnect component is representative of the path traversed from saidroot node to said particular interconnect component, and wherein eachinterconnect component stores said transmitted identifier in a registerin said component only if it has not yet received an identifier or ifsaid transmitted identifier is lower in value than its current storedidentifier.
 2. The method of claim 1 wherein each said subsequentnumerical value of comprises a path specification.
 3. The method ofclaim 2 wherein said path specification comprises a turn count and aturn value.
 4. The method of claim 1, whereby said assigning andtransmitting step further comprises said root node assigning andtransmitting a unique numerical value as an identifier to each of saidinterconnect components attached to each of its links.
 5. The method ofclaim 4, whereby said assigning and transmitting step further compriseseach of said interconnect components receiving at least one saidnumerical value, and upon receipt of said numerical value, creating andtransmitting a new numerical value, based on said received numericalvalue, to each of said interconnect components attached to each of itslinks.
 6. The method of claim 1, wherein said interconnect componentscomprise bridges.
 7. The method of claim 1, wherein said interconnectcomponents comprise switches.
 8. The method of claim 1, furthercomprising creating a spanning tree by superimposing a directed acyclicgraph on said fabric and logically omitting some set of a plurality oflinks in said fabric from said spanning tree.
 9. The method of claim 1,wherein said fabric operates using a set of data transmission rules,further comprising the steps of configuring each interconnect componentto operate within said fabric in accordance with said data transmissionrules whereby said configuring steps comprise scanning the fabric for afirst bus; scanning the fabric for additional buses; assigning a busidentifier to said first bus and each subordinate buses on the fabric;scanning each bus, to detect devices on each bus; configuring eachdevice found on each bus in accordance with said data transmissionrules; and determining the resource requirements of each device withinsaid fabric.
 10. The method of claim 1, further including the steps ofidentifying each component within said fabric comprising: building alist of all connections on the fabric; and determining the path havingthe fewest turns from said root node to every other node.
 11. The methodof claim 1, wherein said fabric comprises more than one root nodes. 12.The method of claim 1 wherein said identifier comprises a parallelfabric number.
 13. The method of claim 4, whereby said assigning andtransmitting step further comprises each of said interconnect componentsreceiving at least one said numerical value; and upon receipt of saidnumerical value, comparing said received numerical value to said storedidentifier; and if said received numerical value is lower than saidstored identifier, creating and transmitting a new numerical value,based on said received numerical value, to each of said interconnectcomponents attached to each of its links.
 14. An interconnect component,for use within a fabric having a root node, comprising a storage elementadapted to store an identifier, wherein said identifier isrepresentative of the path traversed from said root node to saidinterconnect component.
 15. The interconnect component of claim 14,wherein said identifier comprises a path specification.
 16. Theinterconnect component of claim 15 wherein said path specificationcomprises a turn count and a turn value.